// OCR服务地址，开发环境使用代理路径，生产环境可通过环境变量配置
// 开发环境：使用 Vite 代理 /api/ocr，避免跨域问题
// 生产环境：可通过环境变量 VITE_OCR_SERVICE_URL 配置完整URL
const OCR_SERVICE_URL = import.meta.env.PROD
	? (import.meta.env.VITE_OCR_SERVICE_URL || 'http://10.157.223.52:9002/ocr')
	: '/api/ocr';

/**
 * OCR识别API接口集合
 * @method callOcr 调用OCR识别接口
 */
export function useOcrApi() {
	return {
		/**
		 * 调用OCR识别接口
		 * @param file Base64编码的文件内容
		 * @param fileType 文件类型：0=PDF, 1=图像
		 * @param visualize 是否返回可视化图片
		 */
		callOcr: async (file: string, fileType: number, visualize: boolean = true) => {
			// 如果是完整URL（生产环境），直接使用axios，避免经过项目的request拦截器
			if (OCR_SERVICE_URL.startsWith('http')) {
				const axios = (await import('axios')).default;
				try {
					const response = await axios({
						url: OCR_SERVICE_URL,
						method: 'post',
						headers: {
							'Content-Type': 'application/json',
						},
						data: {
							file: file,
							fileType: fileType,
							visualize: visualize,
						},
						timeout: 60000, // 60秒超时，OCR处理可能需要较长时间
					});
					return response.data;
				} catch (error: any) {
					if (error.response) {
						throw new Error(error.response.data?.msg || error.response.statusText || 'OCR识别失败');
					} else if (error.request) {
						throw new Error('无法连接到OCR服务，请检查服务地址');
					} else {
						throw new Error(error.message || 'OCR识别失败');
					}
				}
			} else {
				// 开发环境使用代理，需要绕过 baseURL，直接使用相对路径
				// 使用原生 axios 创建临时实例，避免经过项目的 request 拦截器
				const axios = (await import('axios')).default;
				try {
					const response = await axios({
						url: OCR_SERVICE_URL,
						method: 'post',
						headers: {
							'Content-Type': 'application/json',
						},
						data: {
							file: file,
							fileType: fileType,
							visualize: visualize,
						},
						timeout: 60000, // 60秒超时，OCR处理可能需要较长时间
						// 不设置 baseURL，使用相对路径，让 Vite 代理处理
					});
					return response.data;
				} catch (error: any) {
					if (error.response) {
						throw new Error(error.response.data?.msg || error.response.statusText || 'OCR识别失败');
					} else if (error.request) {
						throw new Error('无法连接到OCR服务，请检查服务地址');
					} else {
						throw new Error(error.message || 'OCR识别失败');
					}
				}
			}
		},
	};
}
